var path = require("path");

module.exports = function(grunt) {

    grunt.initConfig({
        "markdownpdf": {
            "options": {},
            "files": {
                "src": "",
                "dest": ""
            }
        }
    });

    var Task_MarkdownPdf = function() {
        if (!grunt.file.exists("config.json")) {
            grunt.fail.fatal("Config file \"./config.json\" not found!");
        }
        var conf = grunt.file.readJSON("config.json");

        if (!grunt.file.exists(conf.markdown_source_dir)) {
            grunt.fail.fatal("Markdown source dir invalid!");
        }
        grunt.config.set("markdownpdf.files.src", path.join(conf.markdown_source_dir, "**/*.md"));
        grunt.log.writeln("Markdonw source dir is: " + conf.markdown_source_dir);

        if (!grunt.file.exists(conf.pdf_output_dir)) {
            grunt.fail.fatal("PDF output dir invalid!");
        }
        grunt.config.set("markdownpdf.files.dest", conf.pdf_output_dir);
        grunt.log.writeln("PDF output dir is: " + conf.pdf_output_dir);

        if (conf.style_css_file !== ""
            && grunt.file.exists(conf.style_css_file))
        {
            grunt.config.set("markdownpdf.options", {"cssPath": conf.style_css_file});
            grunt.log.writeln("Use css file to render markdown file: " + conf.style_css_file);
        }
    };

    grunt.loadNpmTasks("grunt-markdown-pdf");
    grunt.registerTask("Task_MarkdownPdf", Task_MarkdownPdf);

    grunt.registerTask("default", ["Task_MarkdownPdf", "markdownpdf"]);

};